package data;

import aplication.Rotulador;
import java.io.File;
import java.util.logging.Level;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import model.Avaliacao;
import model.Avaliacoes;

/*
 * Manipula as avaliações em XML
 * Utiliza JAXB
 */
public class JaxBXMLResultados {

    /*
     * Valva uma avaliação em XML
     * Salva na pasta padrao MyGames do windows
     */
    public static void salveAvaliacao(Avaliacao avaliacao) {
        try {
            Avaliacoes a = loadAvaliacoes();
            if (a == null) {
                a = new Avaliacoes();
            }
            a.addAvaliacao(avaliacao);
            File file = new File(System.getProperty("user.home") + "\\Documents\\My Games\\rotulador\\avaliacao.xml");
            JAXBContext jaxbContext = JAXBContext.newInstance(Avaliacoes.class);
            Marshaller jaxbMarshaller = jaxbContext.createMarshaller();

            jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

            jaxbMarshaller.marshal(a, file);
        } catch (JAXBException e) {
            Rotulador.getLOGGER().logp(Level.WARNING, "jaxBXMLLOad", "Salvar Avalia;ao XML", e.getMessage().toString());
        }
    }

    /*
     * recupera as avaliações apartir do xml..
     */
    public static Avaliacoes loadAvaliacoes() {
        File file = new File(System.getProperty("user.home") + "\\Documents\\My Games\\rotulador\\avaliacao.xml");
        if (file.isFile()) {
            try {
                JAXBContext jaxbContext = JAXBContext.newInstance(Avaliacoes.class);
                Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
                Avaliacoes avaliacoes = (Avaliacoes) jaxbUnmarshaller.unmarshal(file);
                return avaliacoes;
            } catch (JAXBException e) {
                Rotulador.getLOGGER().logp(Level.WARNING, "jaxBXMLLOad", "Load Avalia;ao XML", e.getMessage().toString());
            }
        }
        return null;
    }
}
